<?php
// +----------------------------------------------------------------------
// | OneThink [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013 http://www.onethink.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: 麦当苗儿 <zuojiazi@vip.qq.com> <http://www.zjzit.cn>
// +----------------------------------------------------------------------

namespace Plugins\Attachment;

use Common\Controller\Addon;

/**
 * 附件插件
 * @author 麦当苗儿 <zuojiazi@vip.qq.com>
 */
class AttachmentAddon extends Addon
{

    public $info = array(
        'name' => 'Attachment',
        'title' => '附件',
        'description' => '用于文档模型上传附件',
        'status' => 1,
        'author' => 'thinkphp',
        'version' => '0.1'
    );

    public $admin_list = array(
        'list_grid' => array(
            'id:ID',
            'title:文件名',
            'size:大小',
            'update_time_text:更新时间',
            'document_title:文档标题'
        ),
        'model' => 'Attachment',
        'order' => 'id asc'
    );

    public $custom_adminlist = 'adminlist.html';

    public function install()
    {
        return true;
    }

    public function uninstall()
    {
        return true;
    }

    /* 显示文档模型编辑页插件扩展信息表单 */
    public function documentEditForm($param = array())
    {
        $this->assign($param);
        $this->display(T('Addons://Attachment@Article/edit'));
    }

    /* 文档末尾显示附件列表 */
    public function documentDetailAfter($info = array())
    {
        if (empty($info) || empty($info['id'])) { //数据不正确
            return;
        }

        /* 获取当前文档附件 */
        $Attachment = D('Addons://Attachment/Attachment');
        $map = array('record_id' => $info['id'], 'status' => 1);
        $list = $Attachment->field(true)->where($map)->select();
        if (!$list) { //不存在附件
            return;
        }

        /* 模板赋值并渲染模板 */
        $this->assign('list', $list);
        $this->display(T('Addons://Attachment@Article/detail'));
    }

    /**
     * 文档保存成功后执行行为
     * @param  array $data 文档数据
     * @param  array $catecory 分类数据
     */
    public function documentSaveComplete($param)
    {
        if (MODULE_NAME == 'Home') {
            list($data, $category) = $param;
            /* 附件默认配置项 */
            $default = C('ATTACHMENT_DEFAULT');

            /* 合并当前配置 */
            $config = $category['extend']['attachment'];
            $config = empty($config) ? $default : array_merge($default, $config);
            $attach = I('post.attachment');

            /* 该分类不允许上传附件 */
            if (!$config['is_upload'] || !in_array($attach['type'], str2arr($config['allow_type']))) {
                return;
            }

            switch ($attach['type']) {
                case 1: //外链
                    # code...
                    break;
                case 2: //文件
                    $info = json_decode(think_decrypt($attach['info']), true);
                    if (!empty($info)) {
                        $Attachment = D('Addons://Attachment/Attachment');
                        $Attachment->saveFile($info['name'], $info, $data['id']);
                    } else {
                        return; //TODO:非法附件上传，可记录日志
                    }
                    break;
            }
        }
    }
}
